fontchoser: Fix slider position update when switching from fonts with different recom...
authorAlberto Ruiz <aruiz@gnome.org>
Fri, 2 Aug 2013 13:51:33 +0000 (15:51 +0200)
committerAlberto Ruiz <aruiz@gnome.org>
Fri, 2 Aug 2013 13:51:33 +0000 (15:51 +0200)
gtk/gtkfontchooserwidget.c

index 6cce746fe4116218e33b4bc781089c8d8b8029bb..a0dcc94e3192479968761e56799dec85a506fba3 100644 (file)
@@ -264,10 +264,11 @@ static void
 gtk_font_chooser_widget_update_marks (GtkFontChooserWidget *fontchooser)
 {
   GtkFontChooserWidgetPrivate *priv = fontchooser->priv;
-  GtkAdjustment *adj;
+  GtkAdjustment *adj, *spin_adj;
   const int *sizes;
   gint *font_sizes;
   gint i, n_sizes;
+  gdouble value, spin_value;
 
   if (gtk_list_store_iter_is_valid (GTK_LIST_STORE (priv->model), &priv->font_iter))
     {
@@ -307,12 +308,21 @@ gtk_font_chooser_widget_update_marks (GtkFontChooserWidget *fontchooser)
 
   gtk_scale_clear_marks (GTK_SCALE (priv->size_slider));
 
-  adj = gtk_range_get_adjustment(GTK_RANGE (priv->size_slider));
+  adj        = gtk_range_get_adjustment (GTK_RANGE (priv->size_slider));
+  spin_adj   = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->size_spin));
+  spin_value = gtk_adjustment_get_value (spin_adj);
+
+  if (spin_value < sizes[0])
+    value = (gdouble) sizes[0];
+  else if (spin_value > sizes[n_sizes - 1])
+    value = (gdouble)sizes[n_sizes - 1];
+  else
+    value = (gdouble)spin_value;
 
   /* ensure clamping doesn't callback into font resizing code */
   g_signal_handlers_block_by_func (adj, size_change_cb, fontchooser);
   gtk_adjustment_configure (adj,
-                            gtk_adjustment_get_value (adj),
+                            value,
                             sizes[0],
                             sizes[n_sizes - 1],
                             gtk_adjustment_get_step_increment (adj),